package com.me.util;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.util.Assert;

import com.me.vo.Page;
import com.me.vo.Sort;

/**
 * 将各种类型格式化为EasyUI控件所需的list或Map
 * format：将页面请求的内容转成后台需要的格式
 * parse：将后台响应的内容转换成页面需要的格式
 */
public class EasyUIFormat {
	/**
	 * 格式化分页对象
	 * @param page	分页对象
	 * @return	数据表格
	 */
	public static Map<String, Object> formatGrid(Page page){
		Assert.notNull(page);
		Map<String, Object> map = new HashMap<>();
		map.put("total", page.getTotalCount());
		map.put("rows", page.getData());
		return map;
	}
	
	/**
	 * 格式化实体集
	 * @param list
	 * @return
	 */
	public static Map<String, Object> formatEntities(List<?> list){
		Assert.notNull(list);
		Map<String, Object> map = new HashMap<>();
		map.put("total", list.size());
		map.put("rows", list);
		return map;
	}
	
	/**
	 * 解析页面请求的排序规则
	 * @param	排序字段，排序方向
	 * @return	排序规则
	 */
	public static LinkedHashMap<String, String> parseSortMap(Sort sort){
		Assert.notNull(sort);
		List<String> fields = sort.getSort();
		List<String> orders = sort.getOrder();
		if(fields == null || fields.isEmpty() || orders == null || orders.isEmpty()){
			return null;
		}
		Assert.isTrue(fields.size() == orders.size());
		// 封装返回值
		LinkedHashMap<String, String> map  = new LinkedHashMap<>();
		for(int i = 0; i < fields.size(); i++){
			switch (orders.get(i).toUpperCase()) {
			case "DESC":
				map.put(fields.get(i), "desc");
				continue;
			case "ASC":
			case "":
				map.put(fields.get(i), "asc");
				continue;
			default:
				map = null;
				break;
			}
		}
		return map;
	}
}
